<?php

require_once(BaseConfig::LoadClass('objeto_base.class.php'        ));
require_once(BaseConfig::LoadClass('filtro.class.php'             ));
require_once(BaseConfig::LoadClass('abc.class.php'                ));
require_once(BaseConfig::LoadClass('plugin_abc.class.php'         ));
require_once(BaseConfig::LoadClass('cotizador_qualitas.class.php'));
require_once(BaseConfig::LoadClass('log.class.php'                ));

class ModelosQualitas extends ObjetoBase {
  var $intIdModelo   ;
  var $strMarca      ;
  var $strTipo       ;
  var $strVersion    ;
  var $strModelo     ;
  var $strCategoria  ;
  var $strAMIS       ;
  var $strNvaAMIS    ;
  var $strTransmision;
  var $strOcupantes  ;
  var $strNV1        ;
  var $strNV2        ;
  var $strNombreMarca;
  var $strTarifa     ;
  
  function ModelosQualitas($intIdModelo = 0) {
    $arrMapaDatos = Array();
    
    $arrMapaDatos['id_modelo'   ] = Array('NombreVariable' => 'intIdModelo'   , 'TipoVariable' => 'N');
    $arrMapaDatos['marca'       ] = Array('NombreVariable' => 'strMarca'      , 'TipoVariable' => 'S');
    $arrMapaDatos['tipo'        ] = Array('NombreVariable' => 'strTipo'       , 'TipoVariable' => 'S');
    $arrMapaDatos['version'     ] = Array('NombreVariable' => 'strVersion'    , 'TipoVariable' => 'S');
    $arrMapaDatos['modelo'      ] = Array('NombreVariable' => 'strModelo'     , 'TipoVariable' => 'S');
    $arrMapaDatos['categoria'   ] = Array('NombreVariable' => 'strCategoria'  , 'TipoVariable' => 'S');
    $arrMapaDatos['amis'        ] = Array('NombreVariable' => 'strAMIS'       , 'TipoVariable' => 'S');
    $arrMapaDatos['nva_amis'    ] = Array('NombreVariable' => 'strNvaAMIS'    , 'TipoVariable' => 'S');
    $arrMapaDatos['transmision' ] = Array('NombreVariable' => 'strTransmision', 'TipoVariable' => 'S');
    $arrMapaDatos['ocupantes'   ] = Array('NombreVariable' => 'strOcupantes'  , 'TipoVariable' => 'S');
    $arrMapaDatos['nv1'         ] = Array('NombreVariable' => 'strNV1'        , 'TipoVariable' => 'S');
    $arrMapaDatos['nv2'         ] = Array('NombreVariable' => 'strNV2'        , 'TipoVariable' => 'S');
    $arrMapaDatos['nombre_marca'] = Array('NombreVariable' => 'strNombreMarca', 'TipoVariable' => 'S');
    $arrMapaDatos['tarifa'      ] = Array('NombreVariable' => 'strTarifa'     , 'TipoVariable' => 'S');
    
    $this->__ArmarDatosPrivados('cat_modelos_qualitas', $arrMapaDatos, 'id_modelo');
    $this->SeleccionarPorIndice($intIdModelo);
  }
}

class FiltroModelosQualitas extends Filtro {
  function FiltroModelosQualitas() {
    $arrProceso['marca'       ] = "Marca"       ;
    $arrProceso['tipo'        ] = "Tipo"        ;
    $arrProceso['version'     ] = "Version"     ;
    $arrProceso['modelo'      ] = "Modelo"      ;
    $arrProceso['categoria'   ] = "Categoria"   ;
    $arrProceso['amis'        ] = "AMIS"        ;
    $arrProceso['nva_amis'    ] = "Nva AMIS"    ;
    $arrProceso['transmision' ] = "Transmision" ;
    $arrProceso['ocupantes'   ] = "Ocupantes"   ;
    $arrProceso['nv1'         ] = "NV1"         ;
    $arrProceso['nv2'         ] = "NV2"         ;
    $arrProceso['nombre_marca'] = "Nombre Marca";
    $arrProceso['tarifa'      ] = "Tarifa"      ;
    
    $arrReferencias = array();
    
    parent::CrearFiltro("cat_modelos_qualitas", "id_modelo", $arrProceso, "Busqueda", "", "marca ASC", "ModelosQualitas", $arrReferencias);
  }
}

class PluginABC_ModelosQualitas extends PluginABC {
  function PluginABC_ModelosQualitas() {
    $this->strNombreBoton   = "Obtener Modelos Qualitas desde WEB Service";
    $this->bolLlevaDosPasos = false;
  }
  
  function EjecutarPlugin() {
    Variables::SmallTimeLap(true, "PluginEjec");
    $oCotizador  = new CotizadorQualitas();
    $oConecta    = new Conecta();
    $strConsulta = "TRUNCATE TABLE cat_modelos_qualitas";
//    $oConecta->Consulta($strConsulta);
    
    $oModelo      = new ModelosQualitas();
    
    $strConsulta = "SELECT * FROM cat_marcas_qualitas WHERE clave LIKE 'Z%' ORDER BY nombre ASC";
    $oConecta->Consulta($strConsulta);
    $arrDatosConsulta = $oConecta->GetCompleteRes();
    
    $strRes = "";
    $intContadorCargas = 0;
    $intTotTot = 0;
    foreach($arrDatosConsulta as $arrInfoDato) {
      $intTotMods = 0;
      for($i = 0; $i <= 20; $i++) {
        $intCanbiosAnio = 0; // Para ver si este año hubo modelos nuevos
        set_time_limit(30);
        $arrRespuesta = $oCotizador->ObtenerCatalogoModelosQualitas($arrInfoDato['clave'], date("Y") - $i);
//        die("AAA");
        foreach($arrRespuesta as $arrInfoCol) {
          $strConsulta  = "";
          $strConsulta .= "SELECT * ";
          $strConsulta .= "FROM cat_modelos_qualitas ";
          $strConsulta .= "WHERE marca   = '{$arrInfoCol["marca"  ]}' ";
          $strConsulta .= "  AND tipo    = '{$arrInfoCol["tipo"   ]}' ";
          $strConsulta .= "  AND version = '{$arrInfoCol["version"]}' ";
          $strConsulta .= "  AND modelo  = '{$arrInfoCol["modelo" ]}' ";
          $strConsulta .= "  AND amis    = '{$arrInfoCol["amis"   ]}' ";
          $oConecta->Consulta($strConsulta);
          if($oConecta->EOF) {
            $oModelo->LimpiarObjeto();
            $oModelo->LlenarObjeto($arrInfoCol);
            $oModelo->GuardarObjeto();

            $intTotMods++;
            $intTotTot++;
            $intCanbiosAnio++;
          }
        }
        if(!$intCanbiosAnio) {
          // No hay cambios este año, por lo que no debe de haber cambios en años pasados
          break;
        }
      }
      
      if(!($intContadorCargas % 3)) {
        if($intContadorCargas) {
          $strRes .= "</tr>";
        }
        $strRes .= "<tr>";
      }
      $intContadorCargas++;
      $strRes .= "<td class='ColumnasAlternas" . Variables::Alternar() . "'>" . $arrInfoDato['nombre'] . " ($intTotMods Modelos)</td>";
    }
    
    
    $strRes .= "</tr>";
    $strRes .= "</table>";
    
    $fltLapTime = Variables::SmallTimeLap(false, "PluginEjec");
    $strUnidadMedidaLap = "segundos";
    if($fltLapTime > 180) {
      $fltLapTime /= 60;
      $strUnidadMedidaLap = "minutos";
      if($fltLapTime >= 120) {
        $fltLapTime /= 60;
        $strUnidadMedidaLap = "horas";
      }
    }
    
    $strRes = "<tr><th colspan='3'>Se cargaron $intContadorCargas marcas, $intTotTot datos (Tiempo: " . sprintf("%0.4f", $fltLapTime) . " $strUnidadMedidaLap):</th></tr>" . $strRes;
    $strRes = "<table class='TablaReportes'>" . $strRes;
    
    return $strRes;
  }
}

class ABC_ModelosQualitas extends ABC_Base {
  function ABC_ModelosQualitas() {
    $strClaseBase     = "ModelosQualitas"      ;
    $strClaseFiltro   = "FiltroModelosQualitas";
    $strCampoMostrar  = "nombre"               ;
    $strOpcionListado = "abc_modelos_qualitas" ;
    $strOpcionGuardar = "abc_modelos_qualitas" ;
    $strClaseCarga    = ""                     ;

    $arrNombresColumnas = array();
    $arrNombresColumnas['marca'       ] = "Marca"       ;
    $arrNombresColumnas['tipo'        ] = "Tipo"        ;
    $arrNombresColumnas['version'     ] = "Version"     ;
    $arrNombresColumnas['modelo'      ] = "Modelo"      ;
    $arrNombresColumnas['categoria'   ] = "Categoria"   ;
    $arrNombresColumnas['amis'        ] = "AMIS"        ;
    $arrNombresColumnas['nva_amis'    ] = "Nva AMIS"    ;
    $arrNombresColumnas['transmision' ] = "Transmision" ;
    $arrNombresColumnas['ocupantes'   ] = "Ocupantes"   ;
    $arrNombresColumnas['nv1'         ] = "NV1"         ;
    $arrNombresColumnas['nv2'         ] = "NV2"         ;
    $arrNombresColumnas['nombre_marca'] = "Nombre Marca";
    $arrNombresColumnas['tarifa'      ] = "Tarifa"      ;

    $arrReferencias = array();
    
    $arrPlugIns               = array();
    $arrPlugIns["Globales"][] = "PluginABC_ModelosQualitas";
    
    $this->Inicializar($strClaseBase, $arrNombresColumnas, $strOpcionListado, $strOpcionGuardar, $strCampoMostrar, $strClaseFiltro, $arrReferencias, "", $strClaseCarga);
    $this->arrPlugIns = $arrPlugIns;
    
    $this->bolABCLista             = true ;
    $this->bolABCListaOcultarTD    = true ;
    $this->bolPosibleNuevoElemento = false;
    $this->intTipoGuardado         = 1    ;
    $this->intNumeroRes            = 20   ;
    $this->bolSoloLectura          = true ;
    $this->bolOcultarTituloEnLista = true ;
    $this->bolABCListaMostrarInfo  = true ;
  }
}

?>